package com.qwz.learn;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Qiuwuzhi
 * @version V1.0
 * @Description: 目标对象，它知道观察它的观察者，并提供注册和删除观察者的接口
 * @Package com.qwz.learn.Subject
 * @date 2019/12/24 9:37
 */
public class Subject {
    /**
     * 用来保存注册的观察者对象
     */
    private List<Observer> observerList = new ArrayList<Observer>();

    /**
     * 通知所有注册的观察者对象
     */
    public void notifyObservers() {
        for (Observer observer : observerList) {
            observer.update(this);
        }
    }

    /**
     * 注册观察者对象
     *
     * @param observer
     */
    public void attach(Observer observer) {
        observerList.add(observer);
    }

    /**
     * 删除观察者对象
     *
     * @param observer
     */
    public void detach(Observer observer) {
        observerList.remove(observer);
    }
}
